﻿#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    , kLineDataFetcher(new KLineDataFetcher(this)) // 初始化 KLineDataFetcher
{
    ui->setupUi(this);

    // 将指针与 UI 文件中的 KLineWidget 关联
    kLineWidget = findChild<KLineWidget*>("kLineWidget");
    fetchKLineButton = findChild<QPushButton *>("fetchKLineButton");

    // 连接按钮点击信号到槽函数
    connect(fetchKLineButton, &QPushButton::clicked, this,
            &MainWindow::onFetchKLineButtonClicked);

    // 连接 KLineDataFetcher 的信号到处理函数
    connect(kLineDataFetcher, &KLineDataFetcher::kLineDataFetched, this, [this](const QVector<KLineData> &data) {
        // 将数据传递给 KLineWidget
        if (kLineWidget) {
            kLineWidget->setKLineData(data);
        }
    });

    connect(kLineDataFetcher, &KLineDataFetcher::fetchFailed, this, [](const QString &error) {
        qDebug() << "Failed to fetch KLine data:" << error;
    });

    // 加载本地 JSON 文件中的数据
    QString filePath = "d:/hello/HelloKline/klinedata.json";
    QVector<KLineData> klineData = kLineDataFetcher->loadKLineDataFromFile(filePath);

    // 将本地数据传递给 KLineWidget
    if (kLineWidget) {
        kLineWidget->setKLineData(klineData);
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::onFetchKLineButtonClicked()
{
    // 调用 KLineDataFetcher 来获取数据
    QString token = "f36ccd18a8db675927abda6939c1c91c-c-app"; // 替换为实际的 token
    QString code = "BTCUSDT";
    QString klineType = "8";
    kLineDataFetcher->fetchKLineData(token, code, klineType);
}

